home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / unixSyscall / RCS / chown.c,v < prev    next >
Text File  |  1991-12-10  |  5KB  |  223 lines

  1. head     1.3;
  2. branch   ;
  3. access   ;
  4. symbols  sprited:1.3.1;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.3
  10. date     88.08.25.14.41.09;  author brent;  state Exp;
  11. branches 1.3.1.1;
  12. next     1.2;
  13.  
  14. 1.2
  15. date     88.08.08.14.22.07;  author ouster;  state Exp;
  16. branches ;
  17. next     1.1;
  18.  
  19. 1.1
  20. date     88.06.19.14.31.05;  author ouster;  state Exp;
  21. branches ;
  22. next     ;
  23.  
  24. 1.3.1.1
  25. date     91.12.10.15.41.43;  author kupfer;  state Exp;
  26. branches ;
  27. next     ;
  28.  
  29.  
  30. desc
  31. @@
  32.  
  33.  
  34. 1.3
  35. log
  36. @Re-implemented using the new Fs_SetAttr system call
  37. @
  38. text
  39. @/* 
  40.  * chown.c --
  41.  *
  42.  *    Procedures to map from Unix chown and fchown system calls
  43.  *    to Sprite system call.
  44.  *
  45.  * Copyright 1987 Regents of the University of California
  46.  * All rights reserved.
  47.  */
  48.  
  49. #ifndef lint
  50. static char rcsid[] = "$Header: chown.c,v 1.2 88/08/08 14:22:07 ouster Exp $ SPRITE (Berkeley)";
  51. #endif not lint
  52.  
  53. #include "sprite.h"
  54. #include "fs.h"
  55.  
  56. #include "compatInt.h"
  57. #include <errno.h>
  58.  
  59.  
  60. /*
  61.  *----------------------------------------------------------------------
  62.  *
  63.  * chown --
  64.  *
  65.  *    Procedure to map from Unix chown system call to Sprite 
  66.  *    Fs_SetAttr system call.
  67.  *
  68.  * Results:
  69.  *      UNIX_SUCCESS    - the call was successful.
  70.  *      UNIX_ERROR      - the call was not successful.
  71.  *                        The actual error code stored in errno.
  72.  *
  73.  * Side effects:
  74.  *    The protection of the specified file is modified.
  75.  *
  76.  *----------------------------------------------------------------------
  77.  */
  78.  
  79. int
  80. chown(path, owner, group)
  81.     char *path;
  82.     int owner;
  83.     int group;
  84. {
  85.     ReturnStatus status;    /* result returned by Sprite system calls */
  86.     Fs_Attributes attributes;    /* struct containing all file attributes.
  87.                  * only ownership is looked at. */
  88.  
  89.     attributes.uid = owner;
  90.     attributes.gid = group;
  91.     status = Fs_SetAttr(path,  FS_ATTRIB_LINK, &attributes, FS_SET_OWNER);
  92.     if (status != SUCCESS) {
  93.     errno = Compat_MapCode(status);
  94.     return(UNIX_ERROR);
  95.     } else {
  96.     return(UNIX_SUCCESS);
  97.     }
  98. }
  99.  
  100.  
  101. /*
  102.  *----------------------------------------------------------------------
  103.  *
  104.  * fchown --
  105.  *
  106.  *    Procedure to map from Unix fchown system call to Sprite 
  107.  *    Fs_SetAttrID system call.
  108.  *
  109.  * Results:
  110.  *      UNIX_SUCCESS    - the call was successful.
  111.  *      UNIX_ERROR      - the call was not successful.
  112.  *                        The actual error code stored in errno.
  113.  *
  114.  * Side effects:
  115.  *    The protection of the specified file is modified.
  116.  *
  117.  *----------------------------------------------------------------------
  118.  */
  119.  
  120. int
  121. fchown(fd, owner, group)
  122.     int fd;
  123.     int owner;
  124.     int group;
  125. {
  126.     ReturnStatus status;    /* result returned by Sprite system calls */
  127.     Fs_Attributes attributes;    /* struct containing all file attributes,
  128.                  * only ownship info is looked at. */
  129.  
  130.     attributes.uid = owner;
  131.     attributes.gid = group;
  132.     status = Fs_SetAttrID(fd, &attributes, FS_SET_OWNER);
  133.     if (status != SUCCESS) {
  134.     errno = Compat_MapCode(status);
  135.     return(UNIX_ERROR);
  136.     } else {
  137.     return(UNIX_SUCCESS);
  138.     }
  139. }
  140. @
  141.  
  142.  
  143. 1.3.1.1
  144. log
  145. @Initial branch for Sprite server.
  146. @
  147. text
  148. @d12 1
  149. a12 1
  150. static char rcsid[] = "$Header: /sprite/src/lib/c/unixSyscall/RCS/chown.c,v 1.3 88/08/25 14:41:09 brent Exp $ SPRITE (Berkeley)";
  151. @
  152.  
  153.  
  154. 1.2
  155. log
  156. @Must affect LINK, not file.
  157. @
  158. text
  159. @d12 1
  160. a12 1
  161. static char rcsid[] = "$Header: chown.c,v 1.1 88/06/19 14:31:05 ouster Exp $ SPRITE (Berkeley)";
  162. d28 1
  163. a28 1
  164.  *    Fs_SetAttributes system call.
  165. d47 3
  166. a49 2
  167.     ReturnStatus status;       /* result returned by Sprite system calls */
  168.     Fs_Attributes attributes;  /* struct containing all file attributes */
  169. d51 3
  170. a53 1
  171.     status = Fs_GetAttributes(path, FS_ATTRIB_LINK, &attributes);
  172. a56 11
  173.     }
  174.     if (owner != -1) {
  175.     attributes.uid = owner;
  176.     }
  177.     if (group != -1) {
  178.     attributes.gid = group;
  179.     }
  180.     status = Fs_SetAttributes(path,  FS_ATTRIB_LINK, &attributes);
  181.     if (status != SUCCESS) {
  182.     errno = Compat_MapCode(status);
  183.     return(UNIX_ERROR);
  184. d69 1
  185. a69 1
  186.  *    Fs_SetAttributesID system call.
  187. d88 3
  188. a90 2
  189.     ReturnStatus status;       /* result returned by Sprite system calls */
  190.     Fs_Attributes attributes;  /* struct containing all file attributes */
  191. d92 3
  192. a94 12
  193.     status = Fs_GetAttributesID(fd, &attributes);
  194.     if (status != SUCCESS) {
  195.     errno = Compat_MapCode(status);
  196.     return(UNIX_ERROR);
  197.     }
  198.     if (owner != -1) {
  199.     attributes.uid = owner;
  200.     }
  201.     if (group != -1) {
  202.     attributes.gid = group;
  203.     }
  204.     status = Fs_SetAttributesID(fd, &attributes);
  205. @
  206.  
  207.  
  208. 1.1
  209. log
  210. @Initial revision
  211. @
  212. text
  213. @d12 1
  214. a12 1
  215. static char rcsid[] = "$Header: chown.c,v 1.1 87/03/23 16:31:29 douglis Exp $ SPRITE (Berkeley)";
  216. d50 1
  217. a50 1
  218.     status = Fs_GetAttributes(path, FS_ATTRIB_FILE, &attributes);
  219. d61 1
  220. a61 1
  221.     status = Fs_SetAttributes(path,  FS_ATTRIB_FILE, &attributes);
  222. @
  223.